package wireinject

import (
	"gitee.com/Luna-CY/Golang-Project-Template/internal/dao/business_example_dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/dao/system_configuration_dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/dao/system_object_dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/dao/system_sms_log_dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/dao/system_smtp_log_attachment_dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/dao/system_smtp_log_dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/interface/dao"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/interface/service"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/service/business_example_service"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/service/system_configuration_service"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/service/system_sms_service"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/service/system_smtp_service"
	"gitee.com/Luna-CY/Golang-Project-Template/internal/service/system_storage_service"
	"github.com/google/wire"
)

var ExampleService = wire.NewSet(
	business_example_dao.New, wire.Bind(new(dao.BusinessExample), new(*business_example_dao.BusinessExample)),
	business_example_service.New, wire.Bind(new(service.BusinessExample), new(*business_example_service.Example)),
)

var StorageService = wire.NewSet(
	system_object_dao.New, wire.Bind(new(dao.SystemObject), new(*system_object_dao.SystemObject)),
	system_storage_service.New, wire.Bind(new(service.SystemStorage), new(*system_storage_service.Storage)),
)

var ConfigurationService = wire.NewSet(
	system_configuration_dao.New, wire.Bind(new(dao.SystemConfiguration), new(*system_configuration_dao.SystemConfiguration)),
	system_configuration_service.New, wire.Bind(new(service.SystemConfiguration), new(*system_configuration_service.Configuration)),
)

var SmtpService = wire.NewSet(
	system_smtp_log_attachment_dao.New, wire.Bind(new(dao.SystemSmtpLogAttachment), new(*system_smtp_log_attachment_dao.SystemSmtpLogAttachment)),
	system_smtp_log_dao.New, wire.Bind(new(dao.SystemSmtpLog), new(*system_smtp_log_dao.SystemSmtpLog)),
	system_smtp_service.New, wire.Bind(new(service.SystemSmtp), new(*system_smtp_service.Smtp)),
)

var SmsService = wire.NewSet(
	system_sms_log_dao.New, wire.Bind(new(dao.SystemSmsLog), new(*system_sms_log_dao.SystemSmsLog)),
	system_sms_service.New, wire.Bind(new(service.SystemSms), new(*system_sms_service.Sms)),
)
